public class FindMedian {
    //给定两个大小分别为 m 和 n 的正序（从小到大）数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
    //
    //算法的时间复杂度应该为 O(log (m+n)) 。
    public static void main(String[] args) {
        int[] nums1 = {1, 3};
        int[] nums2 = {2};
        System.out.println(findMedianSortedArrays(nums1, nums2));
    }

    public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int l1 = 0;
        int l2 = 0;
        int l3 = 0;
        int[] nums3 = new int[nums1.length + nums2.length];
        while (l1 < nums1.length && l2 < nums2.length) {
            if (nums1[l1] <= nums2[l2]) {
                nums3[l3] = nums1[l1];
                l1++;
                l3++;
            } else {
                nums3[l3] = nums2[l2];
                l2++;
                l3++;
            }
        }
        if (l1 == nums1.length) {
            for (; l2 < nums2.length; l2++) {
                nums3[l3] = nums2[l2];
                l3++;
            }
        } else if (l2 == nums2.length) {
            for (; l1 < nums1.length; l1++) {
                nums3[l3] = nums1[l1];
                l3++;
            }
        }
        if(nums3.length%2 == 0){
            return (double)(nums3[nums3.length/2] + (double)nums3[nums3.length/2 - 1])/2;
        }else {
            return (double)nums3[nums3.length/2];
        }

    }
}
